Method and system for generating and printing three dimensional barcodes

ABSTRACT

A system that includes a three-dimensional (3D) printing device, processor and computer-readable memory a 3D barcode and prints a three-dimensional object containing information embedded in the 3D barcode by: (i) receiving information to be embedded in the 3D barcode; (ii) determining a barcode symbology, wherein the barcode symbology includes at least one symbol character in a z-dimension; (iii) generating a build sequence that will cause the 3D-printing device to print the 3D barcode that embeds the received information in the 3D barcode in accordance with the barcode symbology; and (iv) using the build sequence to print the 3D object so that each symbol character of the symbology that is to appear in the z-dimension is printed as a physical representation in the z-direction on the 3D object.

BACKGROUND

Barcodes have become a widely accepted method for storing informationabout objects such as identification information, parts, prices, serialnumbers, and many other bits of data. A one-dimensional and/ortwo-dimensional barcode symbol is typically a machine-readable array ofencoded elements that are printed directly on an object surface or onlabels affixed to an object surface. Barcode symbols are typically readby optical techniques, such as by readers implementing scanning laserbeams, handheld wands, or mobile phone cameras. Barcode symbolstypically comprise bars and spaces with bars of varying widthsrepresenting strings of binary ones and spaces of varying widthsrepresenting binary zeros. An example of a one-dimensional barcode 101is shown in FIG. 1.

A QR code is a type of two-dimensional or matrix barcode that may bereadable by electronic devices having a camera, such as smart phones,computing devices, specialized scanners, and so on. The matrix barcodemay include black blocks or modules arranged in a pattern against awhite background. The information encoded within the matrix barcode maybe text, uniform resource locator (URL), alphanumeric, numeric and otherdata. An example of a two-dimensional barcode 102 is shown in FIG. 1B.

Prior art methods exist to add color to traditional one-dimensionalbarcodes and two-dimensional barcodes (printed using two-dimensionalprinters) in order to increase the data capacity. However, the datacapacity of colored barcodes is still very limited and thus the amountof information that can be stored in bar codes is limited to trackinginformation, identification information, and the like. Moreover, theexisting methods do not enable barcodes to include information that isnot easily accessible or visible to a user.

With the advent of three-dimensional (3D) printing technologies, it maybe desirable to introduce new ways for increasing the data capacity ofbarcodes, and for including sensitive non-public information, such thatthe barcodes can store more information such as manufacturinginformation, tracking information for manufacturing parts, and 3D designfiles for the object. This document describes methods and systems thatare directed to at least some of the problems described above.

SUMMARY

In an embodiment a system that includes a three-dimensional (3D)printing device, processor and computer-readable memory a 3D barcode andprints a three-dimensional object containing information embedded in the3D barcode by: (i) receiving information to be embedded in the 3Dbarcode; (ii) determining a barcode symbology, wherein the barcodesymbology includes at least one symbol character in a z-dimension; (iii)generating a build sequence that will cause the 3D-printing device toprint the 3D barcode that embeds the received information in the 3Dbarcode in accordance with the barcode symbology; and (iv) using thebuild sequence to print the 3D object so that each symbol character ofthe symbology that is to appear in the z-dimension is printed as aphysical representation in the z-direction on the 3D object.

Optionally, the system may also sort the received information intopublic information and non-public information. If so, it may determinethe barcode symbology such that the non-public information is embeddedin the at least one symbol character in the z-direction. The system mayprint the public information as two-dimensional symbol characters on asurface of the object. The public information may include, for example,a part number, part identification information, inventory information,user manual, safety information, and/or licensing information. Thenon-public information may include, for example, information relating toprinting of an object, information relating to printing of parts of anobject, secondary manufacturing information, and/or information definingthe sequencing of parts in manufacturing an object.

Optionally, the system may also encode at least one copy of the barcodesymbology within the three-dimensional barcode. Alternatively or inaddition, the system may save at least one copy of the barcode symbologyat a location external to the three-dimensional barcode and encode atleast one link to the location within the three-dimensional barcode.

In some embodiments, if the received information includes aone-dimensional barcode comprising bars and spaces, then whendetermining the barcode symbology the system may convert the bars to afirst height representation and convert the spaces to a second heightrepresentation. Then, when generating the build sequence, the system maygenerate instructions for the 3D printing device to use a single colorto print the bars at a first height corresponding to the first heightrepresentation and print the spaces at a second height corresponding tothe second height representation so that the first height and secondheight are imperceptible to an unaided human eye.

In some embodiments, if the received information includes aone-dimensional barcode comprising bars and spaces, along with a set ofsupplemental data, then when determining the barcode symbology thesystem may convert the bars to a first height representation, convertthe spaces to a second height representation, and convert thesupplemental data to a color representation. Then, when generating thebuild sequence, the system may generate instructions for the 3D printingdevice to use a first color to print the bars at a first heightcorresponding to the first height representation and print the spaces ata second height corresponding to the second height representation, andto augment at least some of the bars or spaces with a second color torepresent the color representation.

In some embodiments, if the received information includes atwo-dimensional barcode comprising first and second pixels that exhibitdifferent colors, then when determining the barcode symbology the systemmay convert the first pixels to a first height representation andconvert the second pixels to a second height representation. Then, whengenerating the build sequence, the system may generating instructionsfor the 3D printing device to use a single color to print the firstpixels at a first height corresponding to the first heightrepresentation and print the second pixels at a second heightcorresponding to the second height representation so that the firstheight and second height are imperceptible to an unaided human eye.

In some embodiments, if the received information includes atwo-dimensional barcode comprising first and second pixels that exhibitdifferent colors, and also a set of supplemental data, then whendetermining the barcode symbology the system may convert the firstpixels to a first height representation, convert the second pixels to asecond height representation, and convert the supplemental data to acolor representation. Then, when generating the build sequence theysystem may generate instructions for the 3D printing device to use afirst color to print the first pixels at a first height corresponding tothe first height representation and print the second pixels at a secondheight corresponding to the second height representation, and to augmentat least some of the first pixels or second pixels with a second colorto represent the color representation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts prior art examples of a one-dimensional and atwo-dimensional barcode, respectively.

FIG. 2 illustrates a schematic representation of a system for producinga three dimensional bar code, according to an embodiment.

FIG. 3 depicts a flow chart example of a process for producing a threedimensional barcode, according to an embodiment.

FIG. 4 depicts a flow chart example of a process for determining barcodesymbology, according to an embodiment.

FIG. 5 depicts a flow chart example of a process for generating a buildsequence for a 3D object and printing a 3D barcode on the object.

FIGS. 6A-6D illustrate example structures of three dimensional barcodesproduced according to an embodiment.

FIG. 7 illustrates a block diagram of example hardware that may be usedto contain or implement program instructions according to an embodiment.

DETAILED DESCRIPTION

For purposes of this document, the following terms shall have thefollowing meanings:

As used in this document, the singular forms “a,” “an,” and “the”include plural references unless the context clearly dictates otherwise.Unless defined otherwise, all technical and scientific terms used hereinhave the same meanings as commonly understood by one of ordinary skillin the art. As used in this document, the term “comprising” means“including, but not limited to.”

A “computing device” or “electronic device” refers to a device thatincludes a processor and non-transitory, computer-readable memory. Thememory may contain programming instructions that, when executed by theprocessor, cause the computing device or electronic device to performone or more operations according to the programming instructions. Asused in this description, a “computing device” or an “electronic device”may be a single device, or any number of devices having one or moreprocessors that communicate with each other and share data and/orinstructions. Unless the context specifically dictates otherwise, theterm “processor” will include embodiments having a single processor, aswell as embodiments in which multiple processors collectively performvarious steps of a process. Examples of computing devices and/orelectronic devices include personal computers, servers, mainframes,gaming systems, televisions, and portable electronic devices such assmartphones, personal digital assistants, cameras, tablet computers,laptop computers, media players and the like.

As used herein, a traditional one-dimensional barcode is arepresentation of data as printed or structural or displayed elements inthe x-direction or the y-direction. A two-dimensional barcode, such asdata matrix and QR codes, and comprises printed or structural ordisplayed elements in the x-direction and the y-direction. The terms“three dimensional barcode” and “3D barcode” refer to a one-dimensionaland/or two-dimensional barcode that includes a differential heightcomponent (z-direction) incorporated into the array of encoded elements,as an additional dimension. (In this context, the x, y, and z directionsare perpendicular to each other).

In some embodiments, producing a 3D barcode may refer to creating orengraving a 3D barcode directly on the surface of an object.Alternatively and/or additionally, producing a 3D barcode may refer tocreating or engraving a 3D barcode on a substrate that may be affixed onan object. Examples of the substrate may include, without limitation,metal sheet, paper, cloth, plastic or other pliable or rigid materialsuitable for having one or more symbol characters printed or formedthereon.

Barcode symbology refers to the mapping between data and barcode, and itrefers to a set of rules and definitions specific to the barcode thatdefines the data or information represented by the barcode symbol basedon the specific arrangement and characteristics of bars or elements in abarcode symbol. Arrangements and characteristics may include, withoutlimitation, size, shape, height, color, and width of the elements aswell as spaces between the elements determined by the symbology used.For example, in a traditional barcode a narrow bar or space mightrepresent a 0 while a wide bar or space might represent a 1, or a longbar might represent a 0 while a short bar might represent a 1. Further,“symbol character” refers to the unique geometric shapes or bar andspace patterns or elements used in a bar code symbology to representparticular data characters. For example, in the 16-bit characterencoding standard Unicode, the data character “A” is represented by the16-bit code “0041” in hexadecimal notation and “65” in decimal. The datacharacter “A” is represented as “10” in the traditional bar codesymbology type Code 93. The representation 10 in Code 93(one-dimensional) corresponds to a symbol character having a pattern ofa two module width bar followed by: a single module width space, asingle module width bar, a single module width space, a single modulewidth bar, and a three module width space. This disclosure describes aunique third dimension wherein the symbol characters may include aheight dimension.

The terms “three dimensional printing” and “3D printing” refer to one ofvarious processes of forming a three-dimensional object from a model orother electronic data source through a process by which multiple layersof a build material are formed and cured, typically under control of acomputing device. Examples of 3D printing processes include, withoutlimitation, stereolithography, selective laser sintering, fuseddeposition modeling and laminated object manufacturing.

The terms “three dimensional printing device” and “3D print device”refer to a device or system that is capable of performing a 3D printingprocess. A 3D print device will include a processor. The processor willimplement programming instructions, typically using parameters from adata file, that cause an applicator of the device to selectively depositlayers of a build material (such as a photopolymer or powder), and thatcause a radiation generating device (such as a laser or heat source) toselectively apply energy to help cure the deposited layers of buildmaterial. As used throughout this disclosure, the terms“three-dimensional printing system,” “three-dimensional printer,” “3Dprint device,” “3D printing system,” and “3D printer” refer to any nowor hereafter known 3D printing system or printer.

The terms “three dimensional scanning device” and “3D scanner” refer toa device or system that is capable of performing scanning data that isencoded in a 3D barcode. A 3D print device will include a processor andone or more sensors that can sense physical attributes of the objects.The sensors may include, for example, an image sensor (camera), sonicsensor (e.g., sonar), materials or chemical properties sensor, amagnetic sensor, an x-ray device, a combination of an infrared camerawith an infrared light source, an air-knife type of reader, or othersensors. The processor will implement programming instructions,typically using parameters from a data file that cause the sensor tocollect data that is embedded in a 3D barcode. As used throughout thisdisclosure, the terms “three-dimensional printing system,”“three-dimensional scanner,” “3D scanning device,” “3D scanning system,”and “3D scanner” refer to any now or hereafter known 3D printing systemor printer.

FIG. 2 shows a schematic representation of a system embodiment formanufacturing a 3D object(s) with a 3D barcode (not shown here) using a3D print device 202. The 3D print device 202 may be in communicationwith a computing device 201 having a memory device for storingcomputer-aided design (hereinafter “CAD”) software capable of designingand causing the 3D print device to create objects by 3D printing. Insome embodiments, the computing device 201 may be integral with the 3Dprint device 202. Alternatively, the computing device 201 and 3D printdevice 202 may be separate devices that share data files by one or morecommunication networks, or by a physical or manual file transferprocess. Typically, CAD files contain specifications, from whichgeometry of an object is generated, which in turn allow for arepresentation of the object to be generated. Geometry andrepresentation may be stored in a single CAD file or multiple ones. TheCAD software module includes graphic tools for representing the modeledobjects to the designers. These tools are dedicated to the display ofcomplex objects. A CAD system manages models of objects, which arestored in electronic files. The methods disclosed herein can also beimplemented as stand-alone software not dependent on pre-existing CADsoftware or CAD framework. Such a program may implement its owngraphical user interface (“GUI”), and may use standard 3D softwarelibraries for 3D model generation. Alternatively, such a program mayimplement its own libraries for generating 3D models. The use of CADsoftware in this disclosure is by way of example, and a person skilledin the art will understand that other software and/or design tools maybe used without diverting from the principles of the disclosure.

The computing device may also include one or more modules for enhancingthe functionalities of the original CAD software such that it may allowa user to create a 3D barcode in accordance with the principlesdisclosed here. The module(s) may be a software application includingfunctionality to allow a user to generate data from information anddetermine barcode symbology, and embed the data and/or information inthe form of a 3D barcode in an object and/or a substrate. In someembodiments, the module may be stored in a memory device of thecomputing device 201. Alternatively, the module may be provided on aseparate device (such as a memory stick) or as a cloud-based softwareapplication that may share data files, instructions or both with the CADsoftware by one or more communication networks, or by a physical ormanual file transfer process. In certain embodiments, the data may beextracted from a one-dimensional and/or two-dimensional barcode andembedded in a 3D barcode.

With reference to the flowchart of FIG. 3, a method for creating a 3Dbarcode by providing instructions to a processor of the computing deviceis disclosed. The system may receive information to be included in the3D barcode in step 301. In an embodiment, a user may provide theinformation through a user interface. In certain embodiments, theprocessor may extract the information automatically from databasesrelated to an object on which the 3D barcode will be engraved and/oraffixed. In some embodiments, the information itself may be embedded inthe 3D barcode. In certain other embodiments, at least a part of theinformation may be stored at an external location and pointer(s) theexternal location may be embedded in the 3D barcode. The pointer may bein the form of a hyperlink to a website, or other similar forms.

The information may provide instructions and include details relating tothe object on which the 3D barcode will be engraved and/or affixed.Types of information may include, without limitation, informationrequired for printing copies of the object; identification information;manufacturing license information; intellectual property information;quality control information; composition information; safetyinformation; information relating to post-build operations; informationfor customer use; information for commercial functions; information forconsumer safety; spare parts lists; information for security functions;and combinations thereof.

Example of information required for printing copies of the 3D object mayinclude, without limitation structural parameters, design files, CADfiles, and/or other such information for manufacturing copies of theobject (as discussed above with respect to the reference information).Manufacturing information may also include information needed to licensethe right to manufacture the object, and/or information needed topurchase the license. For example, the 3D barcode may hold links to theCAD files for printing the object, copyright servers, authorizationservers, and/or a path to a server that may enable the transfer of fundsinto the design owner's bank account.

Examples of identification information may include, for the object,customer identification (serial numbers), batch and lot numbers,purchase information, job queue orders, manufacturing date, facility,and other similar types of identification details. In one embodiment,the information may also provide instructions for handling the produced3D object after the build operation is complete.

Quality control information may include information relating to the yearof manufacture, model number, manufacturing plan, and manufacturingoptions. In some embodiments, the quality control information mayfurther include information such as printer serial number, chemicalformula of media, batch number, humidity, temperature, time ofmanufacture, operator number, calibration number, and common faults andtheir severity.

The information may also include information related to the variousparts required for printing copies of an object. Examples may include,without limitation, part numbers, order information, website data,organizational information, or other such information needed forordering, printing, or customizing parts. At least part of thisinformation may be included in 3D barcodes to be engraved and/or affixeddirectly to the respective parts.

Next, in step 302, the processor may apply sorting rules to sort theinformation received into information that is readily available to auser (public information) and information that is not readily availableto a user (non-public information). In an embodiment, the module mayreceive sorting rules from a user, via a user interface and instruct aprocessor to sort the information based on the logic provided by theuser. In certain other embodiments, the processor may sort theinformation based on logic that is pre-programmed into the system, orlogic that it may retrieve from a data file. Examples of such logic mayinclude (i) a rule set requiring that information relating tomanufacturing or printing of the object and/or parts of the object, suchas design files object and/or parts, CMYK composition of the parts,secondary manufacturing operations and manufacture date, be non-publicinformation, (ii) a rule requiring that information that is distributedto customers and users such as a user manual, safety information, andlicensing information be public information, (iii) rule set requiringthat information relating to ordering or customization of parts, such aspart numbers, part identification information, inventory information,and part order information be public information, and (iv) rule setrequiring that information defining the number of parts and/orsequencing in the manufacturing process be non-public information. Theabove logic is by way of example, and other sorting logics are withinthe scope of this disclosure. In some embodiments, a user may be able tocustomize the default sorting rules.

In certain embodiments, the system may further encrypt at least part ofthe information using encryption techniques known to those skilled inthe art.

In step 303, the processor may generate data from the receivedinformation by encoding information in a format that may be representedby a barcode. Any known methods and applications (such as XML) may beused to create the data. The data may also include metadata forfacilitating the conversion of data back to information.

The format or type of data generated may vary depending on, withoutlimitation, the volume of information, the volume of data, type ofscanner to be used to extract data from the 3D barcode, or the barcodesymbology defining the types of barcode elements to be used forrepresenting the data (discussed below). Types of data may include,without limitation, American Standard Code for Information Exchange(ASCII) character set, integers (16-bit, 32-bit, etc.), Boolean (binary,octate, etc.), alphanumeric strings, textual information, or acombination thereof. In some embodiments, numerals such as 8, ocho,100-92, square root of sixty four, etc. are symbols that may be used torepresent numbers.

In some embodiments, a user may enter a plurality of charactersassociated with particular information, in order to generate data.

In certain embodiments, at least part of the information received maynot be converted to data and may be printed with or near the 3D barcodeas text information itself. Examples of such information may include,without limitation, manufacturing dates, part numbers, and serialnumbers.

In step 304, the system may determine barcode symbology for creating the3D barcode, as further described in FIG. 4.

As shown in FIG. 4, in step 401, the system may receive userinstructions for determination of at least a part of the barcodesymbology. Examples of such user instructions may include, withoutlimitation, type of barcode symbology for representing data in thex-direction and/or the y-direction, number of barcodes, types of data tobe encoded in the x, y, or z-directions, type of symbol characters, andother such information.

In step 402, the system may select the type of barcode symbology forrepresenting data in the x-direction and/or the y-direction. Asdiscussed above, a user may define by input (such as responding to aprompt generated by the system) the type of barcode symbology forrepresenting data in the x-direction and/or the y-direction. In certainother embodiments, the processor may select the types of barcodesymbology in the x-direction and/or the y-direction, based on factorssuch as geographic location, marking standards, institutional protocols,available footprint size, size limitations of the barcode, and othersimilar factors. Examples of the types of barcode symbology in thex-direction and/or the y-direction may include Plessey, a UniversalProduct Code (UPC), Codabar, Code 11, Pharmacode, POSTNET, PostBar, etc.

Determination of the barcode symbology may further include sorting thedata and/or information 403 to be embedded in each direction. In someembodiments, the system may receive a set of rules for sorting the dataand/or information. In certain other embodiments, the processor may sortthe data and/or information based on logic that is pre-programmed intothe system, or logic that it may retrieve from a data file. Examples ofsuch logic may include, without limitation: (i) a rule set defining thetypes of information to be encoded in each direction (e.g., non-publicinformation be encoded in the z-direction only); (ii) a rule setrequiring that unencrypted information be encoded in the z-direction;(iii) a rule set requiring encoding non-public information first in thex-direction, then in the y-direction after the data capacity in thex-direction is full, and finally in the z-direction after the datacapacity in the y-direction is full. The above logic is by way ofexample, and other sorting logics are within the scope of thisdisclosure. In some embodiments, a user may be able to customize thedefault sorting rules.

In some embodiments, determination of the barcode symbology may furtherinclude defining 404 a color scheme to be used in the 3D barcode toincrease the data capacity. For example, different colors may beincluded in the symbol characters for encoding different types of data,in addition to space, height, width and other such factors. The colorscheme may be selected based on factors such as the type of scanner,color and/or type of the object and/or the substrate, data capacity,type of information (public or non-public), and the amount ofinformation. It is to be appreciated that when this document uses theterm “color,” it may include distinctly different colors (i.e.,different combinations of CMY) or different shades of a single color(e.g., CMYK). For example, different shades of gray may be employed toadd the ability to encode additional data to a barcode or increase theability of a current symbology to encode additional data.

In step 405, the system may assign symbol characters in the z-directionfor each data character or value. In an embodiment, symbol characters inthe z-direction may include one or more elements to representcharacteristics of physical representations such as height and/or depthof the physical representations, shape of the physical representations(circular, square, rectangular, cylindrical, etc.), dimensions of thephysical representations, and spacing between physical representations.Examples of physical representations may include, without limitation,pits and raised areas on the surface of an object and/or a substrate tobe affixed on an object.

The symbol characters may be assigned based on factors such as type ofbarcode symbology in the x-direction and/or y-direction and theirrespective size limitations, geographic location, marking standards,available footprint size, color scheme, amount of information to beencoded in the z-direction, type of information (public or non-public,and/or encrypted or no-encrypted), type of 3D printer, type of scanner,type of object and/or substrate, visible or invisible z-dimension, andother similar factors. The processor may assign the symbol charactersbased on logic that is pre-programmed into the system, or logic that itmay retrieve from a data file. Example of such logic may include,without limitation, rule sets: (i) defining the maximum number ofelements and maximum space for each symbol character based on the amountof information and the available foot print; (ii) defining the range ofheight, depth, width, or spacing of physical representations in thesymbol characters based on at least the type of scanner to be used andits resolution, (iii) defining the range of height, depth, width, orspacing of physical representations in the symbol characters based on atleast the resolution of the 3D printer; (iv) defining the range ofheight, depth, width, or spacing of physical representations in thesymbol characters based on at least whether or not the data may bevisible to the human eye; (v) defining the range of height, depth,width, or spacing of physical representations in the symbol charactersbased on the symbology in the x-direction and or y-direction; and (vi)imposing constraints on the combinations of shapes, sizes and colors ofthe physical representations. The above logic is by way of example, andother sorting logics are within the scope of this disclosure. In someembodiments, a user may be able to customize the default sorting rules.

Some examples of symbol characters in the z-direction may include,representing numerical binary values such that the presence of a pitwith at least a threshold depth or width represents a zero and thepresence of a raised area with at least a threshold height or widthrepresents a one, or vice versa. Or they may be relative, where the pitor raised area of a first depth, width or height range represents azero; and a second depth, width or height range represents a one. Innon-binary systems additional depth or height range may representadditional values. For example, data character such as an “A” maycorrespond to a symbol character having a pattern of a pair of arectangular pit of 0.1 mm depth and 0.1 mm width at a distance of 0.2mm, in the x-direction, from a circular raised area of 0.1 mm height and0.1 mm diameter. An additional color element may be included to increasethe data capacity. For example, the above symbol character in red colormay correspond to data character “A,” in blue color may correspond tobinary character “0,” in green color may correspond to data character“B,” and so on. The above assignment of symbol characters is arbitrary,and is made simply for exemplary purposes.

The sequence of steps in FIG. 4 is by way of example, and othersequences are within the scope of this disclosure without deviating fromthe principles of this disclosure.

Referring back to FIG. 3, the processor may generate 305 and save 306 toa computer readable memory a set of programming instructions (or a dataset to be used in an instruction template) that provide a build sequencefor creating the 3D barcode by encoding data based on the determinedbarcode symbology directly on an object or on a substrate to be affixedon the object.

In some embodiments, the barcode symbology may further be stored in alocation external to the 3D barcode, for reference by a scanner forretrieving information from a 3D barcode created using the barcodesymbology. A link to the location may be encoded within the 3D barcode.In certain other information, the barcode symbology may be encoded inthe 3D barcode itself.

In step 307, the system may transmit the build sequence to any known 3Dprinter to create the 3D barcode by encoding data in accordance with thepredetermined symbology.

Finally in step 308, the 3D printer may print the 3D barcode with theencoded information, in accordance with the build sequence including thebarcode symbology. This may be any now or hereafter known 3D printingprocess, such as where the printer builds an object over a substrateusing multiple layers of build material. As the printer builds theobject from the substrate up, it may leave cavities (pits) or add raisedareas on external surfaces to create the 3D barcode, in addition to thetraditional one-dimensional and two-dimensional barcodes. In someembodiments, the z-dimension of the 3D barcode may be printed using a 3Dprinter and the x-dimension and y-dimension may be printed usingtraditional barcode printers.

In an alternate embodiment, the system may create a 3D barcode inaccordance with the method described in FIG. 5. In step 501, the systemmay directly extract data to be included in a 3D barcode from areference one-dimensional and/or two-dimensional barcode. The system mayuse any known methods to extract the data. Examples of such methods mayinclude, without limitation, optical scanners for one-dimensionalbarcodes and any electronic device having a camera for a two-dimensionalbarcode.

In some embodiments, the system may then create a 3D barcode, to embedthe extracted data, using the method described above with respect toFIG. 3 and FIG. 4, starting at step 304. Additional information may beincluded in the 3D barcode in accordance with the principles describedabove.

In certain other embodiments, the system may determine a barcodesymbology 502 such that the elements of the reference one-dimensionaland/or two-dimensional barcode are represented as the variable heightelements of the 3D barcode in the z-direction. For example, aone-dimensional barcode includes information represented as bars ofvarying thickness and the white spaces between the bars (in thex-direction). The system may create a barcode symbology such that thevarying thickness of the bars may be represented as differing heights ofelements of a 3D barcode (raised areas and/or pits) created on thesurface of the object or the substrate. The spacing between the raisedareas and/or the pits may be the same as the reference barcode.Similarly, the elements of a two-dimensional barcode may be converted toheight elements of a 3D barcode. Examples of this will be shown in FIGS.6A and 6C. Thus, the 3D barcode created in accordance with this methodmay be invisible to the human eye and can only be read using a 3Dscanner. Hence, the system may convert a visible one-dimensional and/ortwo-dimensional barcode to an invisible 3D barcode. Or, the system maycreate a visible 3D barcode that includes more data than a typical 1D or2D barcode could hold.

In certain embodiments, the system may embed additional information inthe 3D barcode by including a color element in the barcode symbology, asdiscussed above with respect to FIG. 4. In other embodiments, the systemmay generate single-color barcode that is not visible to the unaidedhuman eye but which may be read by a scanner that can detect heightdifferences in the barcode elements.

The processor may then generate 503, and save 504 to a computer-readablememory a set of data and/or instructions that make up a build sequencefor creating the 3D barcode by encoding data based on the determinedbarcode symbology directly on an object or on a substrate to be affixedon the object. In step 505, the system may transmit the build sequenceto any known 3D printer to create the 3D barcode by encoding data inaccordance with the predetermined symbology. Finally in step 506, the 3Dprinter may print the 3D barcode with the encoded information, inaccordance with the build sequence including the barcode symbology, asdiscussed above.

FIGS. 6A-6D illustrate examples of 3D barcodes created in accordance tothe principles of the current disclosure. FIGS. 6A and 6B illustratepits and raised areas added to traditional one dimensional barcodes inthe z-direction with varying widths, shapes and spaces. In the exampleof FIG. 6A, the system has converted a 1D barcode into a 3D barcode of asingle color by (1) converting the 1D barcode's first color elements(e.g., black bars) into a first height representation (e.g., raisedelements 603 projecting toward the z-direction), (2) converting the 1Dbarcode's second color elements (e.g., white spaces between the blackbars) into a second height representation (e.g., pits 602). The systemmay maintain the relative width of each of the elements in order topreserve data that the width represents. The system may save this datato a data file, which the 3D printer will use to print the 3D barcode ona 3D object or substrate. In this context, the term “raised areas” and“pits” refers to the relative heights of the two levels. A “raised area”will typically be printed flush or only slightly above the surface of a3D object or substrate, and a “pit” may be printed flush or onlyslightly below the surface of the 3D object or substrate. The relativeheight differential is such that it is imperceptible to the unaidedhuman eye, but detectable by a 3D scanner. In this way, the 3D scannermay detect the height and width of each element and decode the 3Dbarcode as if it were a 1D barcode.

In the example of FIG. 6B, a 3D barcode of at least two colors is shown.In this example, the system has converted a 1D barcode along withsupplemental data into a 3D barcode of a two colors by (1) convertingthe 1D barcode's first color elements (e.g., black bars) into a firstheight representation (e.g., raised elements 613), (2) converting the 2Dbarcode's second color elements (e.g., white spaces between the blackbars) into a second height representation (e.g., pits 602); and (3)augmenting at least one of the height representations with an additionalcolor (e.g., white space 615 in pit 612) that represents additionalencoded data. The system may maintain the relative width of each of the1D barcode's elements in order to preserve data that the widthrepresents, and the additional color elements may be included withinthat width or (as shown) with a width of their own. The system may savethis data to a data file, which the 3D printer will use to print the 3Dbarcode on a 3D object or substrate. In this way, the 3D scanner maydetect the height and width of each element and decode the 3D barcode asif it were a 1D barcode, and it may also detect the additional colorelements and use the location, width, and height of the additional colorelements to decode the additional data.

In the example of FIG. 6C, the system has converted a 2D matrix barcodeinto a 3D barcode of a single color by (1) converting the 2D barcode'sfirst color elements (e.g., black pixels) into a first heightrepresentation (e.g., upper height level elements 623 projecting towardthe z-direction), (2) converting the 2D barcode's second color elements(e.g., white pixels) into a second height representation (e.g., lowerheight level elements 622). The system may maintain the relative widthof each of the elements in order to preserve data that the widthrepresents. The system may save this data to a data file, which the 3Dprinter will use to print the 3D barcode on a 3D object or substrate.The relative height differential between the raised (upper level)elements 623 and pits (lower level elements) 622 is such that it isimperceptible to the unaided human eye, but detectable by a 3D scanner.In this way, the 3D scanner may detect the location of each element anddecode the 3D barcode as if it were a 2D barcode.

In the example of FIG. 6D, a 3D barcode of at least two colors is shown.In this example, the system has converted a 2D barcode along withsupplemental data into a 3D barcode of a two colors by (1) convertingthe 2D barcode's first color elements (e.g., black pixels) into a firstheight representation (e.g., upper level elements 633), (2) convertingthe 2D barcode's second color elements (e.g., white pixels) into asecond height representation (e.g., lower level element 632); and (3)augmenting at least one of the height representations with an additionalcolor (e.g., black pixels 635 at the lower level) that representsadditional encoded data. The system may thus augment one or more of the2D barcode's pixels with a different color in order to add more data tothe barcode. The system may save this data to a data file, which the 3Dprinter will use to print the 3D barcode on a 3D object or substrate. Inthis way, the 3D scanner may detect the location of each element anddecode the 3D barcode as if it were a 2D barcode, and it may also detectthe additional color elements and use the location of the additionalcolor elements to decode the additional data.

FIG. 7 depicts a block diagram of hardware that may be used to containor implement program instructions. A bus 700 serves as the maininformation highway interconnecting the other illustrated components ofthe hardware. CPU 705 is the central processing unit of the system,performing calculations and logic operations required to execute aprogram. CPU 705, alone or in conjunction with one or more of the otherelements disclosed in FIG. 7, is an example of an electronic device,computing device or processor as such terms are used within thisdisclosure. Read only memory (ROM) 710 and random access memory (RAM)715 constitute examples of non-transitory computer-readable storagemedia.

A controller 720 interfaces with one or more optional non-transitorycomputer-readable storage media 725 to the system bus 700. These storagemedia 725 may include, for example, an external or internal DVD drive, aCD ROM drive, a hard drive, flash memory, a USB drive or the like. Asindicated previously, these various drives and controllers are optionaldevices.

Program instructions, software or interactive modules for providing theinterface and performing any querying or analysis associated with one ormore data sets may be stored in the ROM 710 and/or the RAM 715.Optionally, the program instructions may be stored on a tangible,non-transitory computer-readable medium such as a compact disk, adigital disk, flash memory, a memory card, a USB drive, an optical discstorage medium and/or other recording medium.

An optional display interface 730 may permit information from the bus700 to be displayed on the display 735 in audio, visual, graphic oralphanumeric format. Communication with external devices, such as aprinting device, may occur using various communication ports 740. Acommunication port 740 may be attached to a communications network, suchas the Internet or an intranet.

The hardware may also include an interface 745 which allows for receiptof data from input devices such as a keyboard 750 or other input device755 such as a mouse, a joystick, a touch screen, a remote control, apointing device, a video input device and/or an audio input device.

It will be appreciated that the various above-disclosed and otherfeatures and functions, or alternatives thereof, may be desirablycombined into many other different systems or applications orcombinations of systems and applications. Also that various presentlyunforeseen or unanticipated alternatives, modifications, variations orimprovements therein may be subsequently made by those skilled in theart which are also intended to be encompassed by the following claims.

1. A method of printing a three-dimensional object containinginformation embedded in a three-dimensional barcode, the methodcomprising: by a processor, receiving information to be embedded in thethree-dimensional barcode; by the processor, determining a barcodesymbology, wherein the barcode symbology includes at least one symbolcharacter in a z-dimension; by the processor, generating a buildsequence that will cause a three-dimensional printing device to printthe three-dimensional barcode that embeds the received information inthe three-dimensional barcode in accordance with the barcode symbology;and by a three-dimensional printing device, using the build sequence toprint the three-dimensional object so that each symbol character of thesymbology that is to appear in the z-dimension is printed as a physicalrepresentation in the z-direction on the three-dimensional object. 2.The method of claim 1, further comprising, by the processor: sorting thereceived information into public information and non-public information;and determining the barcode symbology such that the non-publicinformation is embedded in the at least one symbol character in thez-direction.
 3. The method of claim 2, wherein the public informationincludes at least one of the following: a part number, partidentification information, inventory information, user manual, safetyinformation, or licensing information; and the method also includes, bythe three-dimensional printing device, printing the public informationas two-dimensional symbol characters on a surface of the object.
 4. Themethod of claim 2, wherein the non-public information includes at leastone of the following: information relating to printing of an object,information relating to printing of parts of an object, secondarymanufacturing information, or information defining the sequencing ofparts in manufacturing an object.
 5. The method of claim 1, furthercomprising encoding at least one copy of the barcode symbology withinthe three-dimensional barcode.
 6. The method of claim 1, furthercomprising: saving at least one copy of the barcode symbology at alocation external to the three-dimensional barcode; and encoding atleast one link to the location within the three-dimensional barcode. 7.The method of claim 1, wherein: receiving the information comprisesreceiving a one-dimensional barcode comprising a plurality of bars and aplurality of spaces; determining the barcode symbology comprisesconverting the bars to a first height representation and converting thespaces to a second height representation; and generating the buildsequence comprises generating instructions to use a single color toprint the bars at a first height corresponding to the first heightrepresentation and print the spaces at a second height corresponding tothe second height representation so that the first height and secondheight are imperceptible to an unaided human eye.
 8. The method of claim1, wherein: receiving the information comprises receiving aone-dimensional barcode comprising a plurality of bars and a pluralityof spaces, along with a set of supplemental data; determining thebarcode symbology comprises converting the bars to a first heightrepresentation and converting the spaces to a second heightrepresentation, and converting the supplemental data to a colorrepresentation; and generating the build sequence comprises generatinginstructions to use a first color to print the bars at a first heightcorresponding to the first height representation and print the spaces ata second height corresponding to the second height representation, andaugmenting at least some of the bars or spaces with a second color torepresent the color representation.
 9. The method of claim 1, wherein:receiving the information comprises receiving a two-dimensional barcodecomprising a plurality of first pixels and a plurality of second pixels,wherein the first pixels exhibit a color that is different from thesecond pixels; determining the barcode symbology comprises convertingthe first pixels to a first height representation and converting thesecond pixels to a second height representation; and generating thebuild sequence comprises generating instructions to use a single colorto print the first pixels at a first height corresponding to the firstheight representation and print the second pixels at a second heightcorresponding to the second height representation so that the firstheight and second height are imperceptible to an unaided human eye. 10.The method of claim 1, wherein: receiving the information comprisesreceiving a two-dimensional barcode comprising a plurality of firstpixels and a plurality of second pixels, wherein the first pixelsexhibit a color that is different from the second pixels, and alsoreceiving a set of supplemental data; determining the barcode symbologycomprises converting the first pixels to a first height representation,converting the second pixels to a second height representation, andconverting the supplemental data to a color representation; andgenerating the build sequence comprises generating instructions to use afirst color to print the first pixels at a first height corresponding tothe first height representation and print the second pixels at a secondheight corresponding to the second height representation, and augmentingat least some of the first pixels or second pixels with a second colorto represent the color representation.
 11. A system for printing athree-dimensional object containing information embedded in athree-dimensional barcode, the system comprising: a three-dimensionalprinting device; a processor; and a memory device containing programminginstructions that are configured to cause the processor to: receiveinformation to be embedded in a three-dimensional barcode; determine abarcode symbology that includes at least one symbol character in az-dimension; generate a build sequence that will cause thethree-dimensional printing device to print the three-dimensional barcodethat embeds the received information in the three-dimensional barcode inaccordance with the barcode symbology; and cause the three dimensionalprinting device to use the build sequence to print the three-dimensionalobject so that each symbol character of the symbology that is to appearin the z-dimension is printed as a physical representation in thez-direction on the three-dimensional object.
 12. The system of claim 11,further comprising additional programming instructions that areconfigured to cause the processor to: sort the received information intopublic information and non-public information; determine the barcodesymbology such that the non-public information is embedded in the atleast one symbol character in the z-direction; and cause thethree-dimensional printing device to print the public information astwo-dimensional symbol characters on a surface of the object.
 13. Thesystem of claim 11, further comprising additional programminginstructions that are configured to cause the processor to encode atleast one copy of the barcode symbology within the three-dimensionalbarcode.
 14. The system of claim 11, further comprising additionalprogramming instructions that are configured to cause the processor to:save at least one copy of the barcode symbology at a location externalto the three-dimensional barcode; and encode at least one link to thelocation within the three-dimensional barcode.
 15. The system of claim11, wherein: the instructions to receive the information compriseinstructions to receive a one-dimensional barcode comprising a pluralityof bars and a plurality of spaces; the instructions to determine thebarcode symbology comprise instructions to convert the bars to a firstheight representation and converting the spaces to a second heightrepresentation; and the instructions to generate the build sequencecomprise instructions to generate instructions to use a single color toprint the bars at a first height corresponding to the first heightrepresentation and print the spaces at a second height corresponding tothe second height representation so that the first height and secondheight are imperceptible to an unaided human eye.
 16. The system ofclaim 11, wherein: the instructions to receive the information compriseinstructions to receive a one-dimensional barcode comprising a pluralityof bars and a plurality of spaces, along with a set of supplementaldata; the instructions to determine the barcode symbology compriseinstructions to convert the bars to a first height representation andconverting the spaces to a second height representation, and convertingthe supplemental data to a color representation; and the instructions togenerate the build sequence comprise instructions to generateinstructions to use a first color to print the bars at a first heightcorresponding to the first height representation and print the spaces ata second height corresponding to the second height representation, andto augment at least some of the bars or spaces with a second color torepresent the color representation.
 17. The system of claim 11, wherein:the instructions to receive the information comprise instructions toreceive a two-dimensional barcode comprising a plurality of first pixelsand a plurality of second pixels, wherein the first pixels exhibit acolor that is different from the second pixels; the instructions todetermine the barcode symbology comprise instructions to convert thefirst pixels to a first height representation and converting the secondpixels to a second height representation; and the instructions togenerate the build sequence comprise instructions to generateinstructions to use a single color to print the first pixels at a firstheight corresponding to the first height representation and print thesecond pixels at a second height corresponding to the second heightrepresentation so that the first height and second height areimperceptible to an unaided human eye.
 18. The system of claim 11,wherein: the instructions to receive the information compriseinstructions to receive a two-dimensional barcode comprising a pluralityof first pixels and a plurality of second pixels, wherein the firstpixels exhibit a color that is different from the second pixels, andalso receive a set of supplemental data; the instructions to determinethe barcode symbology comprise instructions to convert the first pixelsto a first height representation, convert the second pixels to a secondheight representation, and convert the supplemental data to a colorrepresentation; and the instructions to generate the build sequencecomprise instructions to generate instructions to use a first color toprint the first pixels at a first height corresponding to the firstheight representation and print the second pixels at a second heightcorresponding to the second height representation, and to augment atleast some of the first pixels or second pixels with a second color torepresent the color representation.
 19. A three-dimensional barcodestructure printed on an object, the barcode structure comprising encodedinformation, wherein at least part of the information is embedded in az-dimension.
 20. The barcode structure of claim 19, wherein: a firstportion of the encoded information comprises first bars of first height;a second portion of the encoded information comprises second bars of asecond height; and the first bars and second bars exhibit a singlecolor, and the first height and second height are close enough to eachother so that the barcode may be detected by a 3D scanning device but isimperceptible to an unaided human eye.
 21. The barcode structure ofclaim 19, wherein: a first portion of the encoded information comprisesfirst bars of first height; a second portion of the encoded informationcomprises second bars of a second height; the first bars and second barsexhibit a first color; and a third portion of the encoded informationcomprises bars of a second color positioned at either the first heightor the second height.
 22. The barcode structure of claim 19, wherein: afirst portion of the encoded information comprises first pixels of firstheight; a second portion of the encoded information comprises secondpixels of a second height; and the first pixels and second pixelsexhibit a single color, and the first height and second height are closeenough to each other so that the barcode may be detected by a 3Dscanning device but is imperceptible to an unaided human eye.
 23. Thebarcode structure of claim 19, wherein: a first portion of the encodedinformation comprises first pixels of first height; a second portion ofthe encoded information comprises second pixels of a second height; thefirst pixels and second pixels exhibit a first color; and a thirdportion of the encoded information comprises pixels of a second colorpositioned at either the first height or the second height.